<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" /> 
        <title>list sorter</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <div id="root">
            <h2>人员列表</h2>
            <input v-model="keyWord" type="text" placeholder="请输入名字">
            <button @click="sortType = 2">年龄升序</button>
            <button @click="sortType = 1">年龄降序</button>
            <button @click="sortType = 0">原顺序</button>
            <ul>
                <li v-for="(p, index) in filterPeople" :key="index">
                    {{p.name}} - {{p.age}} - {{p.sex}}
                </li>
            </ul>     
        </div>
    </body>
            
    <script type="text/javascript">
        Vue.config.productionTip = false // 阻止vue在启动时生成生产提示。

        new Vue({
            el:'#root',
            data:{
                keyWord: '',
                sortType: 0,    // 0原顺序 1降序 2升序
                people: [
                    {id:'001', name: '马冬梅', age: 18, sex:"女"},
                    {id:'002', name: '周冬雨', age: 31, sex:"女"},
                    {id:'003', name: '周杰伦', age: 20, sex:"男"},
                    {id:'004', name: '温兆伦', age: 21, sex:"男"},
                ],
            },
            computed:{
                filterPeople(){
                    const arr = this.people.filter((p) => {
                        return p.name.indexOf(this.keyWord) !== -1
                    })
                    if(this.sortType){
                        arr.sort((p1, p2) =>{
                            return this.sortType === 1 ? p2.age - p1.age : p1.age - p2.age;
                        })
                    }
                    return arr
                },
            }
        })
        
    </script>
</html>